package org.infodavid.common.notifier;

import java.util.Set;

/**
 * The Interface IMailCommand.
 */
public interface IMailCommand extends INotifierCommand {

	/**
	 * Gets the cc.
	 * @return the cc
	 */
	Set<String> getCc();

	/**
	 * Sets the cc.
	 * @param values the new cc
	 */
	void setCc(String... values);

	/**
	 * Gets the bcc.
	 * @return the bcc
	 */
	Set<String> getBcc();

	/**
	 * Sets the bcc.
	 * @param values the new bcc
	 */
	void setBcc(String... values);

	/**
	 * Gets the content.
	 * @return the attachment used as main content
	 */
	IAttachment getContent();

	/**
	 * Sets the content.
	 * @param value the new content
	 */
	void setContent(IAttachment value);

	/**
	 * Gets the attachments.
	 * @return the attachments
	 */
	Set<IAttachment> getAttachments();

	/**
	 * Adds the attachment.
	 * @param value the value
	 */
	void addAttachment(IAttachment value);

	/**
	 * Adds the attachment.
	 * @param name the name
	 * @param data the data
	 */
	void addAttachment(String name, byte[] data);

	/**
	 * New attachment instance.
	 * @return the i attachment
	 */
	IAttachment newAttachmentInstance();

	/**
	 * Sets the attachments.
	 * @param values the new attachments
	 */
	void setAttachments(IAttachment... values);

	/**
	 * Gets the flag used to specify that one different mail must be sent to each recipient.
	 * @return true if one different mail must be sent to each recipient
	 */
	boolean isSeparate();

	/**
	 * Sets the flag used to specify that one different mail must be sent to each recipient.
	 * @param flag true if one different mail must be sent to each recipient
	 */
	void setSeparate(boolean flag);
}
